home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 14.4 KB | 418 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWCharIt.cpp
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #include "FWFound.hpp"
-
- #ifndef FWCHARIT_H
- #include "FWCharIt.h"
- #endif
-
- #ifndef SOM_FW_OTextRunReader_xh
- #include "SLTxtRun.xh"
- #endif
-
- #ifndef FWEXCEPT_H
- #include "FWExcept.h"
- #endif
-
- #ifdef FW_BUILD_MAC
- #pragma segment Strings
- #endif
-
- //========================================================================================
- // CLASS FW_CTextReader
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CTextReader)
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::FW_CTextReader
- //----------------------------------------------------------------------------------------
-
- FW_CTextReader::FW_CTextReader(FW_OTextRunReader* adoptedReader) :
- fRep(NULL),
- fAdoptedReader(adoptedReader)
- {
- FW_SOMEnvironment ev;
- fRep = FW_PrivTextReader_New(ev, adoptedReader);
- FW_PrivTextReader_Acquire(fRep, ev);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::FW_CTextReader
- //----------------------------------------------------------------------------------------
-
- FW_CTextReader::FW_CTextReader(FW_HTextReader rep) :
- fRep(rep),
- fAdoptedReader(NULL)
- {
- FW_SOMEnvironment ev;
- FW_PrivTextReader_Acquire(fRep, ev);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::~FW_CTextReader
- //----------------------------------------------------------------------------------------
-
- FW_CTextReader::~FW_CTextReader()
- {
- FW_START_DESTRUCTOR
- FW_SOMEnvironment ev;
- FW_PrivTextReader_Release(fRep, ev);
- delete fAdoptedReader;
- }
-
- //========================================================================================
- // CLASS FW_CTextWriter
- //========================================================================================
-
- FW_DEFINE_AUTO(FW_CTextWriter)
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::FW_CTextWriter
- //----------------------------------------------------------------------------------------
-
- FW_CTextWriter::FW_CTextWriter(FW_OTextRunWriter* adoptedWriter) :
- fRep(0),
- fAdoptedWriter(adoptedWriter)
- {
- FW_SOMEnvironment ev;
- fRep = FW_PrivTextWriter_New(ev, adoptedWriter);
- FW_PrivTextWriter_Acquire(fRep);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::FW_CTextWriter
- //----------------------------------------------------------------------------------------
-
- FW_CTextWriter::FW_CTextWriter(FW_HTextWriter rep) :
- fRep(rep),
- fAdoptedWriter(NULL)
- {
- FW_PrivTextWriter_Acquire(fRep);
- FW_END_CONSTRUCTOR
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::~FW_CTextWriter
- //----------------------------------------------------------------------------------------
-
- FW_CTextWriter::~FW_CTextWriter()
- {
- FW_START_DESTRUCTOR
- FW_SOMEnvironment ev;
- FW_PrivTextWriter_Release(fRep, ev);
- delete fAdoptedWriter;
- }
-
- //========================================================================================
- // CLASS FW_CMemoryReader
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CMemoryReader::MakeReader
- //----------------------------------------------------------------------------------------
-
- FW_OMemoryRunReader* FW_CMemoryReader::MakeReader(char * buffer, FW_ByteCount length, FW_Locale* locale)
- {
- FW_SOMEnvironment ev;
- return (new FW_OMemoryRunReader())->InitWithLocale(ev, buffer, length, locale);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CMemoryReader::FW_CMemoryReader
- //----------------------------------------------------------------------------------------
-
- FW_CMemoryReader::FW_CMemoryReader(const char * buffer, FW_ByteCount bytes) :
- FW_CTextReader(MakeReader((char*)buffer, bytes))
- {
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CMemoryReader::~FW_CMemoryReader
- //----------------------------------------------------------------------------------------
-
- FW_CMemoryReader::~FW_CMemoryReader()
- {
- }
-
- //========================================================================================
- // CLASS FW_CMemoryWriter
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CMemoryWriter::MakeWriter
- //----------------------------------------------------------------------------------------
-
- FW_OMemoryRunWriter* FW_CMemoryWriter::MakeWriter(char * buffer, FW_ByteCount capacity)
- {
- FW_SOMEnvironment ev;
- return (new FW_OMemoryRunWriter())->Initialize(ev, buffer, capacity);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CMemoryWriter::FW_CMemoryWriter
- //----------------------------------------------------------------------------------------
-
- FW_CMemoryWriter::FW_CMemoryWriter(char* buffer, FW_ByteCount capacity) :
- FW_CTextWriter(MakeWriter(buffer, capacity))
- {
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CMemoryWriter::~FW_CMemoryWriter
- //----------------------------------------------------------------------------------------
-
- FW_CMemoryWriter::~FW_CMemoryWriter()
- {
- }
-
- //========================================================================================
- // CLASS FW_CTextReader Inline Functions
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::GetCharacterAndAdvance
- //----------------------------------------------------------------------------------------
-
- FW_LChar FW_CTextReader::GetCharacterAndAdvance()
- {
- FW_SOMEnvironment ev;
- return FW_PrivTextReader_GetCharacterAndAdvance(fRep, ev, NULL);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::GetCharacterAndAdvance
- //----------------------------------------------------------------------------------------
-
- FW_LChar FW_CTextReader::GetCharacterAndAdvance(FW_ByteCount& bytesInChar)
- {
- FW_SOMEnvironment ev;
- return FW_PrivTextReader_GetCharacterAndAdvance(fRep, ev, &bytesInChar);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::BackupAndGetCharacter
- //----------------------------------------------------------------------------------------
-
- FW_LChar FW_CTextReader::BackupAndGetCharacter()
- {
- FW_SOMEnvironment ev;
- return FW_PrivTextReader_BackupAndGetCharacter(fRep, ev, NULL);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::BackupAndGetCharacter
- //----------------------------------------------------------------------------------------
-
- FW_LChar FW_CTextReader::BackupAndGetCharacter(FW_ByteCount& bytesInChar)
- {
- FW_SOMEnvironment ev;
- return FW_PrivTextReader_BackupAndGetCharacter(fRep, ev, &bytesInChar);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::PeekCharacter
- //----------------------------------------------------------------------------------------
-
- FW_LChar FW_CTextReader::PeekCharacter()
- {
- return FW_PrivTextReader_PeekCharacter(fRep, NULL);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::PeekCharacter
- //----------------------------------------------------------------------------------------
-
- FW_LChar FW_CTextReader::PeekCharacter(FW_ByteCount& bytesInChar)
- {
- return FW_PrivTextReader_PeekCharacter(fRep, &bytesInChar);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::Advance
- //----------------------------------------------------------------------------------------
-
- void FW_CTextReader::Advance(FW_ByteCount delta)
- {
- FW_SOMEnvironment ev;
- FW_PrivTextReader_Advance(fRep, ev, delta);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::Backup
- //----------------------------------------------------------------------------------------
-
- void FW_CTextReader::Backup(FW_ByteCount delta)
- {
- FW_SOMEnvironment ev;
- FW_PrivTextReader_Backup(fRep, ev, delta);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::GetPosition
- //----------------------------------------------------------------------------------------
-
- FW_ByteCount FW_CTextReader::GetPosition()
- {
- return FW_PrivTextReader_GetPosition(fRep);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::SetPosition
- //----------------------------------------------------------------------------------------
-
- void FW_CTextReader::SetPosition(FW_ByteCount position)
- {
- FW_SOMEnvironment ev;
- FW_PrivTextReader_SetPosition(fRep, ev, position);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::GetByteLength
- //----------------------------------------------------------------------------------------
-
- FW_ByteCount FW_CTextReader::GetByteLength()
- {
- return FW_PrivTextReader_GetByteLength(fRep);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::GetLocale
- //----------------------------------------------------------------------------------------
-
- void FW_CTextReader::GetLocale(FW_Locale& locale) const
- {
- FW_PrivTextReader_GetLocale(fRep, &locale);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::PeekRunAhead
- //----------------------------------------------------------------------------------------
-
- void FW_CTextReader::PeekRunAhead(const char*& start, FW_ByteCount& length)
- {
- FW_PrivTextReader_PeekRunAhead(fRep, &start, &length);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::PeekRunBehind
- //----------------------------------------------------------------------------------------
-
- void FW_CTextReader::PeekRunBehind(const char*& end, FW_ByteCount& length)
- {
- FW_PrivTextReader_PeekRunBehind(fRep, &end, &length);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::Advance
- //----------------------------------------------------------------------------------------
-
- void FW_CTextReader::Advance()
- {
- FW_SOMEnvironment ev;
- FW_ByteCount bytesInChar = FW_PrivTextReader_PeekCharacterSize(fRep);
- FW_PrivTextReader_Advance(fRep, ev, bytesInChar);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::Backup
- //----------------------------------------------------------------------------------------
-
- void FW_CTextReader::Backup()
- {
- FW_SOMEnvironment ev;
- FW_PrivTextReader_BackupAndGetCharacter(fRep, ev, NULL);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextReader::PeekByte
- //----------------------------------------------------------------------------------------
-
- const char* FW_CTextReader::PeekByte() const
- {
- return FW_PrivTextReader_PeekByte(fRep);
- }
-
- //========================================================================================
- // CLASS FW_CTextWriter Inline Functions
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::FlushBuffer
- //----------------------------------------------------------------------------------------
-
- void FW_CTextWriter::FlushBuffer()
- {
- FW_SOMEnvironment ev;
- FW_PrivTextWriter_FlushBuffer(fRep, ev);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::PutCharacterAndAdvance
- //----------------------------------------------------------------------------------------
-
- void FW_CTextWriter::SetBufferSum(FW_ByteCount bufferSum)
- {
- FW_PrivTextWriter_SetBufferSum(fRep, bufferSum);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::PutCharacterAndAdvance
- //----------------------------------------------------------------------------------------
-
- void FW_CTextWriter::PutCharacterAndAdvance(FW_LChar character, FW_ByteCount bytesInChar)
- {
- FW_SOMEnvironment ev;
- FW_PrivTextWriter_PutCharacterAndAdvance(fRep, ev, character, bytesInChar);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::GetPosition
- //----------------------------------------------------------------------------------------
-
- FW_ByteCount FW_CTextWriter::GetPosition()
- {
- FW_SOMEnvironment ev;
- return FW_PrivTextWriter_GetPosition(fRep, ev);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::FlushAndGetNextBuffer
- //----------------------------------------------------------------------------------------
-
- void FW_CTextWriter::FlushAndGetNextBuffer()
- {
- FW_SOMEnvironment ev;
- FW_PrivTextWriter_FlushAndGetNextBuffer(fRep, ev);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::WritePeek
- //----------------------------------------------------------------------------------------
-
- void FW_CTextWriter::WritePeek(char*& start, FW_ByteCount& length)
- {
- FW_SOMEnvironment ev;
- FW_PrivTextWriter_WritePeek(fRep, ev, &start, &length);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTextWriter::WritePeekAdvance
- //----------------------------------------------------------------------------------------
-
- void FW_CTextWriter::WritePeekAdvance(char* start, FW_ByteCount bytesWritten)
- {
- FW_PrivTextWriter_WritePeekAdvance(fRep, start, bytesWritten);
- }
-
-